This invention relates to computers and computing devices that include devices such as Universal Serial Bus (USB) devices and graphics adapters, and more particularly to providing support for these devices using a defined area of memory during and/or after boot up, before an operating system is present and/or after an operating system is loaded.
As computers have evolved, the processing power and available memory have both increased with each passing year. However, to allow for continuing use of existing software applications and hardware devices, current computers must take into consideration limitations inherent in earlier computer models so as to provide compatibility. This is sometimes referred to as legacy support, support for legacy systems, support for legacy devices, etc.
One of the most popular computer processor architectures is the 32 bit Intel Architecture known as IA-32. For more information see the IA-32 Intel Architecture Software Developer""s Manual available from Intel corporation, Santa Clara, Calif. For each new advance in processor technology, certain old limitations must be maintained so as to allow for software and/or component and/or system compatibility.
One such legacy limitation is the ability to access and/or use system memory during boot up. As older systems may have had only 256 Kbytes or 512 Kbytes of random access memory (RAM), an upper threshold from earlier systems limiting memory access to those portions of RAM from zero to 1 Mbyte of memory has been maintained, to various degrees, during processor boot up in current systems conforming to and/or compatible with the IA-32 architecture. That is, during boot up, many systems may only use 1 Mbyte of memory even though the current system may have, for example, 64 Mbytes or 256 Mbytes of RAM.
Such a limitation has drawbacks that restrict system performance in various areas. One such area is device support during system boot up. During the boot process of a computer, a basic input-output system (BIOS) controls what occurs. A BIOS may check the status of various hardware components and devices and receive input from the hardware devices. To do so, the BIOS must be able to receive data from and otherwise communicate with the devices attached to or included in the system. For example, it may be necessary for the BIOS to receive user initiated input such as from a keyboard or for the BIOS to initiate execution of startup software to be read from, for example, a floppy disk, hard disk, and compact disk read-only memory (CD-ROM).
The BIOS may also provide support to a graphics adapter to allow for the display of information on a display monitor for communication to a system user. Because of legacy considerations, only information about a single graphics adapter may be stored in memory. However, some more recent systems include a second graphics adapter to support a second graphics display monitor.
To provide support for all of these devices, the BIOS contains software that uses system RAM to serve as device drivers or other software that supports various devices. However, in some systems the available RAM is limited based on legacy considerations to only the space from 0 to 1 Mbyte. As such, the BIOS software, the device drivers and/or other software and their associated data structures may encroach on or exceed this legacy limitation.